package cn.highedu.coolsharkhub.service.impl;

import cn.highedu.coolsharkhub.entity.vo.UserVO;
import cn.highedu.coolsharkhub.mapper.UserMapper;
import cn.highedu.coolsharkhub.service.UserService;
import cn.highedu.coolsharkhub.service.exception.BlankParameterException;
import cn.highedu.coolsharkhub.service.exception.UserNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 用户业务类 功能：访问mapper持久层 并完成各种业务逻辑(抛出异常、输出日志)判断
 */
@Service // 业务层声明
public class UserServiceImpl implements UserService {
    private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
    // 注入UserMapper实例
    @Autowired
    UserMapper userMapper;

    /**
     * 用户登录 登录成功返回用户视图对象(UserVO) 登录失败抛出异常
     * @param username 用户名
     * @param password 密码
     * @return 用户视图对象
     */
    @Override
    public UserVO login(String username, String password) {
        // 判断用户名是否为空
        if (username == null || username.trim().isEmpty()) {
            logger.warn("用户名不能为空");
            // 抛出异常
            throw new BlankParameterException("用户名不能为空");
        }
        // 判断密码是否为空
        if (password == null || password.trim().isEmpty()) {
            logger.warn("密码不能为空");
            throw new BlankParameterException("密码不能为空");
        }
        // 访问持久层 查询用户
        UserVO userVO = userMapper.selectUserByUsername(username);
        // 用户名不存在
        if (userVO == null) {
            logger.warn("用户名不存在");
            throw new UserNotFoundException("用户名不存在");
        }
        //  密码不正确
        if (!userVO.getPassword().equals(password)) {
            logger.warn("密码错误");
            throw new UserNotFoundException("密码错误");
        }
        // 登录成功返回一个用户视图对象
        return userVO;
    }
}
